/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package clases;

import controladores.ConvenioXPeriodoFacadeLocal;
import controladores.ConvenioXPeriodoXEstudianteFacadeLocal;
import entidades.ConvenioXPeriodoXEstudiante;
import entidades.Estudiante;
import entidades.SeguimientoTelefonicoPractica;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import negocio.ConvenioXPeriodoInterface;
import negocio.ConvenioXPeriodoXEstudianteInterface;
import negocio.EstudianteInterface;
import negocio.SeguimientoTelefonicoInterface;

/**
 *
 * @author BATAQUERO
 */
@ManagedBean
@ViewScoped
public class ListaSeguimientoTelefonicoPracticaBean implements Serializable{

    @EJB
    private ConvenioXPeriodoXEstudianteFacadeLocal convenioXPeriodoXEstudianteFacadeLocal;
    private List<ConvenioXPeriodoXEstudiante> convenioXPeriodoXEstudiantes;
    private String ESTADO_PERIODO = "ACT";
    private ConvenioXPeriodoXEstudiante estudianteSelected;
    @ManagedProperty(value = "#{sessionBean}")
    private SessionBean sessionBean;
    private int idSupervisor;
    private int idCoordinador;
    private int idPracticante;
    private final int ROL_COORDINADOR = 2;
    private final int ROL_SUPERVISOR = 3;
    private final int ROL_PRACTICANTE = 5;
    private SeguimientoTelefonicoPractica selectedSeguimientoPracticaInterface;
    private List<SeguimientoTelefonicoPractica> seguimientoTelefonicoPracticas;
    
    private List<Estudiante> estudiantes;
    @EJB
    private SeguimientoTelefonicoInterface seguimientoTelefonicoInterface;
    private ConvenioXPeriodoXEstudiante convenioXPeriodoXEstudiante;
    private boolean visibleEdicionFormato;
//    private ConvenioXPeriodoFacadeLocal convenioXPeriodoFacadeLocal;
//    
//    private ConvenioXPeriodoXEstudianteInterface convenioXPeriodoXEstudianteInterface;
//    @EJB
//    private ConvenioXPeriodoInterface convenioXPeriodoInterface;
//    
    public ListaSeguimientoTelefonicoPracticaBean(){
    }
    
    @PostConstruct
    public void init() {
        switch (sessionBean.getUsuarioSession().getIdRol().getIdRol()){
            case ROL_COORDINADOR:
                idCoordinador = sessionBean.getUsuarioSession().getIdUsuario();
                convenioXPeriodoXEstudiantes = convenioXPeriodoXEstudianteFacadeLocal.listarEstudiantesXPeriodo(ESTADO_PERIODO);
                break;
            case ROL_SUPERVISOR:
                idSupervisor = sessionBean.getUsuarioSession().getIdUsuario();
                convenioXPeriodoXEstudiantes = convenioXPeriodoXEstudianteFacadeLocal.listarEstudiantesXSupervisor(idSupervisor, ESTADO_PERIODO);
                break;
            case ROL_PRACTICANTE:
                idPracticante = sessionBean.getUsuarioSession().getIdUsuario();
                convenioXPeriodoXEstudiantes = convenioXPeriodoXEstudianteFacadeLocal.consultarEstudiante(idPracticante, ESTADO_PERIODO);
                break;
                
        }
        //estudiantes = estudianteInterface.listarEstudiantes();
        //estudiantes = estudianteInterface.listarEstudiantes();
        //Supervisor supervisor = new Supervisor(sessionBean.getUsuarioSession().getSupervisor().getIdSupervisor());
//        Supervisor supervisor = new Supervisor(3010);
//        Periodo periodo = new Periodo(2);
//        convenioXPeriodoXEstudiantes = convenioXPeriodoInterface.consultarXSupervisorXPeriodoConveniosXPeriodo(supervisor, periodo).getConvenioXPeriodoXEstudianteList();
//        for(ConvenioXPeriodoXEstudiante estudiante : convenioXPeriodoXEstudiantes){
//            //estudiante.setEstudiante();
//            //estudiante.getEstudiante().getIdEstudiante();
//            //Estudiante est = new Estudiante(estudiante.getEstudiante().getIdEstudiante(), estudiante.getEstudiante().getCedulaEstudiante(),  estudiante.getEstudiante().getNombresEstudiante(),estudiante.getEstudiante().getApellido1Estudiante(), estudianteSelected, estudianteSelected, estudianteSelected, estudianteSelected, true); 
//            estudiantes.add(estudiante.getEstudiante());
//        }
    }
     public void listarSeguimientosTelefonicos(ActionEvent actionEvent) {     
        seguimientoTelefonicoPracticas = (List<SeguimientoTelefonicoPractica>) convenioXPeriodoXEstudianteFacadeLocal.consultarConvenioXPeriodoXEstudiante(estudianteSelected.getEstudiante().getIdEstudiante(), ESTADO_PERIODO).getSeguimientoTelefonicoPracticaList();      
    }
     public void permitirEdicionSeguimientoTelefonicoPractica(SeguimientoTelefonicoPractica seguimientoTelefonicoPractica ) {
        editarSeguimientoTelefonicoPractica(seguimientoTelefonicoPractica);
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Exitoso", "Se ha permitido la edicion de este formato."));
    }
     
     public void aprobarFormato(SeguimientoTelefonicoPractica seguimientoTelefonicoPractica) {
        editarSeguimientoTelefonicoPractica(seguimientoTelefonicoPractica);
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Exitoso", "Se ha modificado la aprobación del formato."));
    }
     
     private void editarSeguimientoTelefonicoPractica(SeguimientoTelefonicoPractica seguimientoTelefonicoPractica ) {
        try {
            seguimientoTelefonicoInterface.permitirEdicionSeguimientoTelefonicoPractica(seguimientoTelefonicoPractica);
        } catch (Exception e) {
            FacesMessage facesMessage = new FacesMessage("Error");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
            e.printStackTrace();
        }
    }
     
    public List<Estudiante> getEstudiantes() {
        return estudiantes;
    }

    public void setEstudiantes(List<Estudiante> estudiantes) {
        this.estudiantes = estudiantes;
    }

   

    public List<SeguimientoTelefonicoPractica> getSeguimientoTelefonicoPracticas() {
        return seguimientoTelefonicoPracticas;
    }

    public void setSeguimientoTelefonicoPracticas(List<SeguimientoTelefonicoPractica> seguimientoTelefonicoPracticas) {
        this.seguimientoTelefonicoPracticas = seguimientoTelefonicoPracticas;
    }

    public ConvenioXPeriodoXEstudiante getEstudianteSelected() {
        return estudianteSelected;
    }

    public void setEstudianteSelected(ConvenioXPeriodoXEstudiante estudianteSelected) {
        this.estudianteSelected = estudianteSelected;
    }

    public ConvenioXPeriodoXEstudiante getConvenioXPeriodoXEstudiante() {
        return convenioXPeriodoXEstudiante;
    }

    public SeguimientoTelefonicoInterface getSeguimientoTelefonicoInterface() {
        return seguimientoTelefonicoInterface;
    }

    public void setSeguimientoTelefonicoInterface(SeguimientoTelefonicoInterface seguimientoTelefonicoInterface) {
        this.seguimientoTelefonicoInterface = seguimientoTelefonicoInterface;
    }

    public void setConvenioXPeriodoXEstudiante(ConvenioXPeriodoXEstudiante convenioXPeriodoXEstudiante) {
        this.convenioXPeriodoXEstudiante = convenioXPeriodoXEstudiante;
    }

    public SeguimientoTelefonicoPractica getSelectedSeguimientoPracticaInterface() {
        return selectedSeguimientoPracticaInterface;
    }

    public void setSelectedSeguimientoPracticaInterface(SeguimientoTelefonicoPractica selectedSeguimientoPracticaInterface) {
        this.selectedSeguimientoPracticaInterface = selectedSeguimientoPracticaInterface;
    }

    public boolean isVisibleEdicionFormato() {
        return visibleEdicionFormato;
    }

    public void setVisibleEdicionFormato(boolean visibleEdicionFormato) {
        this.visibleEdicionFormato = visibleEdicionFormato;
    }

    public List<ConvenioXPeriodoXEstudiante> getConvenioXPeriodoXEstudiantes() {
        return convenioXPeriodoXEstudiantes;
    }

    public void setConvenioXPeriodoXEstudiantes(List<ConvenioXPeriodoXEstudiante> convenioXPeriodoXEstudiantes) {
        this.convenioXPeriodoXEstudiantes = convenioXPeriodoXEstudiantes;
    }

    public SessionBean getSessionBean() {
        return sessionBean;
    }

    public void setSessionBean(SessionBean sessionBean) {
        this.sessionBean = sessionBean;
    }
    
    public void irFormularioSeguimientoTelefonicoPractica(SeguimientoTelefonicoPractica selectedSeguimientoTelefonicoPractica ) {
        try {
            ExternalContext ctx = FacesContext.getCurrentInstance().getExternalContext();
            ctx.redirect("SeguimientoTelefonicoPractica.xhtml?seguimientoTelefonicoPractica=" + selectedSeguimientoTelefonicoPractica.getIdSeguimientosTelefonico() + "&&accionSeguimientoTelefonicoPractica=Consultar");
            
        } catch (IOException ex) {
            Logger.getLogger(ListaSeguimientoInformeMensualBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
       
}
